@overload из модуля typing позволяет указать несколько сигнатур для одной функции. Это особенно полезно, когда возвращаемый тип зависит от аргументов — и вы хотите, чтобы типизация отражала это поведение.
— transform(..., "split") → list[str] — transform(..., "upper") → str — Типизация подскажет ошибку, если вы вызовете append() у строки или .lower() у списка
Другой кейс — когда нужен только один аргумент из двух:
@overload из модуля typing позволяет указать несколько сигнатур для одной функции. Это особенно полезно, когда возвращаемый тип зависит от аргументов — и вы хотите, чтобы типизация отражала это поведение.
— transform(..., "split") → list[str] — transform(..., "upper") → str — Типизация подскажет ошибку, если вы вызовете append() у строки или .lower() у списка
Другой кейс — когда нужен только один аргумент из двух: